#ifndef CIAPP_APPLICATION_H
#define CIAPP_APPLICATION_H

#include <stack>

#include "../Gui/MainWindow.h"
#include "../Operations/Operation.h"

namespace CIApp {
    class Application {

    public:
        Application();              //Constructor
        virtual ~Application();     //Destructor

    protected:
        CIGui::MainWindow* mw;                   //The application main window

        std::stack<CIOps::Operation*> undoableOps;     //A stack that contains all operations executed by the user, that can be canceled
        std::stack<CIOps::Operation*> redoableOps;     //A stack that contains all operations canceled by the user, that can be performed again

    public: 
        void Run();                 //Method called to run the application
    };
}

#endif /* CIAPP_APPLICATION_H */
